package com.example.bailin.giftsay.baseclass;

import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.ViewUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.example.bailin.giftsay.tool.NetTool;

/**
 * Created by bailin on 16/8/15.
 */
public abstract class BaseFragment extends Fragment {
    // 所有的子类，都会有这样的context对象
    // 可以给Adapter,Dialog等使用
    protected Context mContext;
    private NetTool netTool;

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        mContext = context;
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        netTool = new NetTool();
        return inflater.inflate(setLayout(), container, false);
    }

    protected abstract int setLayout();

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        initView();
    }

    // 初始化组件，在该方法里， 做FindViewById的操作
    protected abstract void initView();

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        initData();
    }

    // 初始化数据，例如网络请求，查询数据库等
    protected abstract void initData();

    // fragment本身的组件，来做FindViewById的操作时调用
    // 会在方法里，自动的getView-fragment所绑定的布局
    protected <T extends View> T bindView(int id) {
        return (T) getView().findViewById(id);
    }

    // 当要FindView的操作对象是指定的某个View的时候，调用
    // 例如popupwindwo Dialog等
    protected <T extends View> T bindView(View view, int id) {
        return (T) view.findViewById(id);
    }

    protected NetTool tool() {
        return new NetTool();
    }

}





















